package cn.tedu.work;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.MessageProperties;

import java.util.Arrays;
import java.util.Scanner;

public class WorkProducer {
    public static void main(String[] args) throws Exception {
        //1.连接到RabbitMQ服务器
        ConnectionFactory cf = new ConnectionFactory();
        //利用连接工厂设置连接信息
        cf.setHost("192.168.8.100");
        cf.setPort(5672);
        cf.setUsername("admin");
        cf.setPassword("Aq71056r");
        //2.创建连接对象（TCP）---所有的RabbitMQ服务器的客户端使用一个tcp连接对象
        Connection nc = cf.newConnection();
        //3.利用tcp连接对象创建channel（通道）
        Channel cc = nc.createChannel();
        //4.通过channel创建队列
        //第一个参数：队列名为simple.queue
        //第二个参数：队列是否持久化  设置队列持久化 那么消费者也得更改队列持久化
        //第三个参数：队列是否独占
        //第四个参数：队列是否自动删除
        //第五个参数：其他属性的设置
        cc.queueDeclare("work.queue", true, false, false, null);
        //5.准备数据（Hello World+当前系统的时间）
        String s="Hello World"+System.currentTimeMillis();
        Scanner scanner=new Scanner(System.in);
       while (true){
           System.out.println("请输入消息~");
           s=scanner.nextLine();
           if (s.equals("exit"))
               break;
           //6.把消息发送到RabbitMQ中
           //第一个参数；先忽略，写"",注意双引号中间不要加空格
           //第二个参数：先写成队列名
           //第三个参数：其他属性     //MessageProperties.PERSISTENT_TEXT_PLAIN 代表消息持久化
           //第四个参数：要发送的数据，要求是byte[]类型
           cc.basicPublish("", "work.queue", MessageProperties.PERSISTENT_TEXT_PLAIN, s.getBytes());
           System.out.println("发送成功!");
       }
        //7.关闭连接
        nc.close();
    }
}